package com.ruoyi.epidemic.mapper;

import com.ruoyi.epidemic.domain.EpidemicControlDept;
import com.ruoyi.epidemic.domain.WxCpSysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 疫情防控部门Mapper接口
 *
 * @author ruoyi
 * @date 2022-04-05
 */
public interface EpidemicControlDeptMapper
{
    /**
     * 查询疫情防控部门
     *
     * @param deptId 疫情防控部门主键
     * @return 疫情防控部门
     */
    public EpidemicControlDept selectEpidemicControlDeptByDeptId(Long deptId);

    /**
     * 查询疫情防控部门列表
     *
     * @param epidemicControlDept 疫情防控部门
     * @return 疫情防控部门集合
     */
    public List<EpidemicControlDept> selectEpidemicControlDeptList(EpidemicControlDept epidemicControlDept);

    /**
     * 新增疫情防控部门
     *
     * @param epidemicControlDept 疫情防控部门
     * @return 结果
     */
    public int insertEpidemicControlDept(EpidemicControlDept epidemicControlDept);

    /**
     * 修改疫情防控部门
     *
     * @param epidemicControlDept 疫情防控部门
     * @return 结果
     */
    public int updateEpidemicControlDept(EpidemicControlDept epidemicControlDept);

    /**
     * 删除疫情防控部门
     *
     * @param deptId 疫情防控部门主键
     * @return 结果
     */
    public int deleteEpidemicControlDeptByDeptId(Long deptId);

    /**
     * 批量删除疫情防控部门
     *
     * @param deptIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEpidemicControlDeptByDeptIds(String[] deptIds);

    /**
     * 根据条件分页查询用户列表
     *
     * @param wxCpSysUser 用户信息
     * @return 用户信息集合信息
     */
    public List<WxCpSysUser> selectEpidemicUserList(WxCpSysUser wxCpSysUser);

    /**
     *
     * @param userDeptId
     * @return
     */
    public WxCpSysUser selectEpidemicUser(Long  userDeptId);

    List<Map<String, Object>> getAllWxCpSysUser(String deptId);

    public EpidemicControlDept selectDeptById(Long deptId);

    /**
     * 查询部门人数
     *
     * @param dept 部门信息
     * @return 结果
     */
    public int selectDeptCount(EpidemicControlDept dept);

    /**
     * 查询部门是否存在用户
     *
     * @param deptId 部门ID
     * @return 结果 true 存在 false 不存在
     */
    public int checkDeptExistUser(Long deptId);

    /**
     * 校验部门名称是否唯一
     * @param deptName
     * @param parentId
     * @return
     */
    public EpidemicControlDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);

    /**
     * 根据ID查询所有子部门（正常状态）
     *
     * @param deptId 部门ID
     * @return 子部门数
     */
    public int selectNormalChildrenDeptById(Long deptId);

    /**
     * 根据父ID查询下一层子部门（正常状态）
     *
     * @param deptId 部门ID
     * @return 子部门数
     */
    public List<EpidemicControlDept> selectDeptByparentId(@Param("deptId")Long deptId, @Param("flag")String flag);

    /**
     * 根据父ID查询所有子部门（正常状态）
     *
     * @param deptId 部门ID
     * @return 子部门数
     */
    public String selectAllDeptByrootId(Long deptId);

    /**
     *
     * @param deptId
     * @return
     */
    List<EpidemicControlDept> selectDeptByparentIdForExternal(@Param("deptId")Long deptId, @Param("flag")String flag);
}
